使用关系运算符比较日期和时间

您所在的位置:网站首页 matlab if判断相等 使用关系运算符比较日期和时间

使用关系运算符比较日期和时间

2023-09-23 00:32| 来源: 网络整理| 查看: 265

比较 datetime 数组

创建一个 datetime 数组。要转换表示日期和时间的文本,请使用 datetime 函数。

D1 = datetime("2022-06-05 11:37:05")D1 = datetime 05-Jun-2022 11:37:05

您也可以将数字转换为 datetime 数组。输入数值数组表示 datetime 分量 - 年、月、日、小时、分钟和秒。

D2 = datetime(2022,2:4:10,15,12,0,0)D2 = 1x3 datetime 15-Feb-2022 12:00:00 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00

比较这两个 datetime 数组。结果会显示 D2 中的哪些元素在 D1 之后出现。

TF = D1 < D2TF = 1x3 logical array 0 1 1

要创建仅包含匹配元素的新 datetime 数组,请使用 TF 对 D2 进行索引。

afterD1 = D2(TF)afterD1 = 1x2 datetime 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00

文本和 datetime 数组

如果您有表示日期和时间的文本,并且其格式可以被 datetime 函数识别,则您可以将该文本与 datetime 数组进行比较。比较会隐式转换该文本。

例如,将表示 2022 年 6 月 1 日的字符串与 D2 进行比较。D2 的第一个元素出现在 6 月 1 日之前。(如果仅指定日期,则时间设置为午夜。)

TF = D2 >= "2022-06-01"TF = 1x3 logical array 0 1 1 afterJune1 = D2(TF)afterJune1 = 1x2 datetime 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00

datetime 数组的分量

datetime 数据类型支持访问 datetime 值的分量。使用 year、quarter、month、day、hour、minute 和 second 函数访问分量。您可以将分量与数字或 duration 值进行比较,因为这些函数返回数字。

例如,先显示 datetime 数组 D2。然后显示其月份分量。

D2D2 = 1x3 datetime 15-Feb-2022 12:00:00 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00 M = month(D2)M = 1×3 2 6 10

要查找 D2 中出现在 6 月之前的元素,请将 D2 与对应于 6 月的数值进行比较。然后对 D2 进行索引。

TF = month(D2) < 6TF = 1x3 logical array 1 0 0 beforeJune = D2(TF)beforeJune = datetime 15-Feb-2022 12:00:00

比较 duration 数组

创建一个 duration 数组。创建该数组的一种方法是使用 duration 函数来转换表示时长的文本。

例如,转换 hh:mm:ss 格式的文本。

T1 = duration("03:37:12")T1 = duration 03:37:12

您也可以将数字转换为 duration 数组。输入数值数组表示小时、分钟和秒。

T2 = duration(0:2:6,30,0)T2 = 1x4 duration 00:30:00 02:30:00 04:30:00 06:30:00

比较这两个 duration 数组。结果会显示 T2 中的哪些元素比 T1 长。

TF = T1 < T2TF = 1x4 logical array 0 0 1 1

要创建仅包含匹配元素的新 duration 数组,请使用 TF 对 T2 进行索引。

longerThanT1 = T2(TF)longerThanT1 = 1x2 duration 04:30:00 06:30:00

文本和 duration 数组

如果您有表示时长的文本,并且其格式可以被 duration 函数识别,则您可以将该文本与 duration 数组进行比较。比较会隐式转换该文本。

例如,将表示两小时零五分钟的字符串与 T2 进行比较。T2 中的第一个元素较短。

T2 >= "02:05:00"ans = 1x4 logical array 0 1 1 1 longerThan205 = T2(TF)longerThan205 = 1x2 duration 04:30:00 06:30:00

数字和 duration 数组

您可以将数值数组与 duration 数组进行比较。比较会将数值视为固定长度(24 小时制)的天数。

将 T2 中的元素与一天进行比较。每个元素都较短。

TF = T2 < 1TF = 1x4 logical array 1 1 1 1 T2(TF)ans = 1x4 duration 00:30:00 02:30:00 04:30:00 06:30:00

将 T2 中的元素与一小时进行比较。只有 T2 中的第一个元素较短。

TF = T2 < 1/24TF = 1x4 logical array 1 0 0 0 T2(TF)ans = duration 00:30:00

跨不同时区的比较

分别为 2022 年 10 月 1 日下午 4 点(洛杉矶时间)和 2022 年 10 月 1 日下午 5 点(纽约时间)创建 datetime 值。这两个城市相距甚远,分处不同时区。

您可以通过指定 TimeZone 名称-值参数创建带时区的 datetime 数组。要在显示这些值时显示时区,请指定 Format 名称-值参数。请注意,您可以指定不同于输入文本格式的 datetime 显示格式。

LAtime = datetime("2022-10-01 16:00:00", ... "TimeZone","America/Los_Angeles",... "Format","dd-MMM-yyyy hh:mm:ss a z")LAtime = datetime 01-Oct-2022 04:00:00 PM PDT NYtime = datetime("2022-10-01 17:00:00", ... "TimeZone","America/New_York",... "Format","dd-MMM-yyyy hh:mm:ss a z")NYtime = datetime 01-Oct-2022 05:00:00 PM EDT

比较这两个城市的时间。洛杉矶下午 4:00 发生在纽约同一天的下午 5:00 点之后。如果您指定了时区,则 datetime 数组的比较会考虑每个数组的时区信息。

TF = NYtime < LAtimeTF = logical 1

其他比较

MATLAB 还提供了其他用于日期和时间比较的函数。

isbetween - 确定 datetime 或 duration 值是否在一个区间内

isdst - 确定 datetime 值是否出现在夏令时期间

isnat - 确定 datetime 值是否为 NaT(非时间)值

isweekend - 确定 datetime 值是否出现在周末(周六和周日)

例如,确定 datetime 数组中是否有出现在 2022 年第一季度的元素。

start1Q = datetime("2022-01-01"); end1Q = datetime("2022-04-01"); D = datetime(2022,2:4:10,15,12,0,0)D = 1x3 datetime 15-Feb-2022 12:00:00 15-Jun-2022 12:00:00 15-Oct-2022 12:00:00 TF = isbetween(D,start1Q,end1Q)TF = 1x3 logical array 1 0 0

显示 D 中出现在第一季度的元素。

D(TF)ans = datetime 15-Feb-2022 12:00:00

通过设置 D 的 TimeZone 属性来指定其时区。然后确定是否有元素出现在夏令时期间。

D.TimeZone = "America/New_York"; isdst(D)ans = 1x3 logical array 0 1 1

确定是否有元素出现在周末。

isweekend(D)ans = 1x3 logical array 0 0 1

要显示匹配元素是星期几,请使用 day 函数。

weekendDays = D(isweekend(D))weekendDays = datetime 15-Oct-2022 12:00:00 day(weekendDays,"name")ans = 1x1 cell array {'Saturday'}


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3